//编写一个函数来查找字符串数组中的最长公共前缀。 
//
// 如果不存在公共前缀，返回空字符串 ""。 
//
// 示例 1: 
//
// 输入: ["flower","flow","flight"]
//输出: "fl"
// 
//
// 示例 2: 
//
// 输入: ["dog","racecar","car"]
//输出: ""
//解释: 输入不存在公共前缀。
// 
//
// 说明: 
//
// 所有输入只包含小写字母 a-z 。 
// Related Topics 字符串 
// 👍 1212 👎 0

package leetcode.editor.cn;

//Java：最长公共前缀
public class P14LongestCommonPrefix {

    //leetcode submit region begin(Prohibit modification and deletion)
    /**
     * 思路:按位比较 有问题的话，退出循环
     *
     * 执行用时： 1 ms , 在所有 Java 提交中击败了 84.80% 的用户 内存消耗： 37.5 MB , 在所有 Java 提交中击败了 89.57% 的用户
     */
    class Solution {
        public String longestCommonPrefix(String[] strs) {
            StringBuilder sb = new StringBuilder("");
            int i = 0;
            boolean flag = true;
            char c = ' ';
            if (strs.length != 0) {
                while (flag) {
                    for (String str : strs) {
                        if (i == str.length()) {
                            flag = false;
                            break;
                        }
                        if (c == ' ') {
                            c = str.charAt(i);
                        } else {
                            if (str.charAt(i) != c) {
                                flag = false;
                                break;
                            }
                        }

                    }
                    if (flag) {
                        sb.append(c);
                    }
                    c = ' ';
                    i++;
                }
            }
            return sb.toString();
        }
    }
//leetcode submit region end(Prohibit modification and deletion)

    public static void main(String[] args) {
        Solution solution = new P14LongestCommonPrefix().new Solution();
        String[] arr = new String[]{};
        System.out.println(solution.longestCommonPrefix(arr));
        // TO TEST
    }

}